package br.unesp.rc.lcpjcontacts.model.bean;

import java.util.Date;

import com.thoughtworks.xstream.annotations.XStreamAlias;


/**
 * Bean para uma pessoa (entrada) dos contatos.
 * 
 * @author rafaelt
 *
 */
@XStreamAlias("pessoa")
public class Pessoa {

	/** The id pessoa. */
	private Long idPessoa;
	
	/** The nome. */
	private String nome;
	
	/** The nome do meio. */
	private String nomeDoMeio;
	
	/** The sobrenome. */
	private String sobrenome;
	
	/** The apelido. */
	private String apelido;
	
	/** The data nascimento. */
	private Date dataNascimento;
	
	/** The endereco residencial. */
	private Endereco enderecoResidencial;
	
	/** The endereco comercial. */
	private Endereco enderecoComercial;
	
	/** The contato pessoal. */
	private Contato contatoPessoal;
	
	/** The contato comercial. */
	private Contato contatoComercial;
	
	/**
	 * Instantiates a new pessoa.
	 *
	 * @param nome the nome
	 * @param nomeDoMeio the nome do meio
	 * @param sobrenome the sobrenome
	 * @param apelido the apelido
	 * @param dataNascimento the data nascimento
	 * @param enderecoResidencial the endereco residencial
	 * @param enderecoComercial the endereco comercial
	 * @param contatoPessoal the contato pessoal
	 * @param contatoComercial the contato comercial
	 */
	public Pessoa(final String nome, final String nomeDoMeio, final String sobrenome,
			final String apelido, final Date dataNascimento, final Endereco enderecoResidencial,
			final Endereco enderecoComercial, final Contato contatoPessoal,
			final Contato contatoComercial) {
		super();
		this.nome = nome;
		this.nomeDoMeio = nomeDoMeio;
		this.sobrenome = sobrenome;
		this.apelido = apelido;
		this.dataNascimento = dataNascimento;
		this.enderecoResidencial = enderecoResidencial;
		this.enderecoComercial = enderecoComercial;
		this.contatoPessoal = contatoPessoal;
		this.contatoComercial = contatoComercial;
	}
        
	/**
	 * Instantiates a new pessoa.
	 *
	 * @param nome the nome
	 * @param sobrenome the sobrenome
	 */
	public Pessoa(final String nome, final String sobrenome) {
		super();
		this.nome = nome;
		this.sobrenome = sobrenome;
	}        

	/**
	 * Gets the id pessoa.
	 *
	 * @return o idPessoa
	 */
	public Long getIdPessoa() {
		return idPessoa;
	}

	/**
	 * Sets the id pessoa.
	 *
	 * @param idPessoa o idPessoa para setar
	 */
	public void setIdPessoa(final Long idPessoa) {
		this.idPessoa = idPessoa;
	}

	/**
	 * Gets the nome.
	 *
	 * @return o nome
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * Sets the nome.
	 *
	 * @param nome o nome para setar
	 */
	public void setNome(final String nome) {
		this.nome = nome;
	}

	/**
	 * Gets the nome do meio.
	 *
	 * @return o nomeDoMeio
	 */
	public String getNomeDoMeio() {
		return nomeDoMeio;
	}

	/**
	 * Sets the nome do meio.
	 *
	 * @param nomeDoMeio o nomeDoMeio para setar
	 */
	public void setNomeDoMeio(final String nomeDoMeio) {
		this.nomeDoMeio = nomeDoMeio;
	}

	/**
	 * Gets the sobrenome.
	 *
	 * @return o sobrenome
	 */
	public String getSobrenome() {
		return sobrenome;
	}

	/**
	 * Sets the sobrenome.
	 *
	 * @param sobrenome o sobrenome para setar
	 */
	public void setSobrenome(final String sobrenome) {
		this.sobrenome = sobrenome;
	}

	/**
	 * Gets the apelido.
	 *
	 * @return o apelido
	 */
	public String getApelido() {
		return apelido;
	}

	/**
	 * Sets the apelido.
	 *
	 * @param apelido o apelido para setar
	 */
	public void setApelido(final String apelido) {
		this.apelido = apelido;
	}

	/**
	 * Gets the data nascimento.
	 *
	 * @return a dataNascimento
	 */
	public Date getDataNascimento() {
		return dataNascimento;
	}

	/**
	 * Sets the data nascimento.
	 *
	 * @param dataNascimento a dataNascimento para setar
	 */
	public void setDataNascimento(final Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	/**
	 * Gets the endereco residencial.
	 *
	 * @return o enderecoResidencial
	 */
	public Endereco getEnderecoResidencial() {
		return enderecoResidencial;
	}

	/**
	 * Sets the endereco residencial.
	 *
	 * @param enderecoResidencial o enderecoResidencial para setar
	 */
	public void setEnderecoResidencial(final Endereco enderecoResidencial) {
		this.enderecoResidencial = enderecoResidencial;
	}

	/**
	 * Gets the endereco comercial.
	 *
	 * @return o enderecoComercial
	 */
	public Endereco getEnderecoComercial() {
		return enderecoComercial;
	}

	/**
	 * Sets the endereco comercial.
	 *
	 * @param enderecoComercial o enderecoComercial para setar
	 */
	public void setEnderecoComercial(final Endereco enderecoComercial) {
		this.enderecoComercial = enderecoComercial;
	}

	/**
	 * Gets the contato pessoal.
	 *
	 * @return o contatoPessoal
	 */
	public Contato getContatoPessoal() {
		return contatoPessoal;
	}

	/**
	 * Sets the contato pessoal.
	 *
	 * @param contatoPessoal o contatoPessoal para setar
	 */
	public void setContatoPessoal(final Contato contatoPessoal) {
		this.contatoPessoal = contatoPessoal;
	}

	/**
	 * Gets the contato comercial.
	 *
	 * @return o contatoComercial
	 */
	public Contato getContatoComercial() {
		return contatoComercial;
	}

	/**
	 * Sets the contato comercial.
	 *
	 * @param contatoComercial o contatoComercial para setar
	 */
	public void setContatoComercial(final Contato contatoComercial) {
		this.contatoComercial = contatoComercial;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "Pessoa [idPessoa=" + idPessoa + ", nome=" + nome
				+ ", nomeDoMeio=" + nomeDoMeio + ", sobrenome=" + sobrenome
				+ ", apelido=" + apelido + ", dataNascimento=" + dataNascimento
				+ ", enderecoResidencial=" + enderecoResidencial
				+ ", enderecoComercial=" + enderecoComercial
				+ ", contatoPessoal=" + contatoPessoal + ", contatoComercial="
				+ contatoComercial + "]";
	}
}
